package com.qny.ai.service;

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.messages.Message;
import org.springframework.web.socket.WebSocketSession;

import java.util.List;

public interface StreamingLLMService {
    
    /**
     * 流式处理LLM请求
     * @param messages 消息历史
     * @param session WebSocket会话，用于发送流式响应
     * @param conversationId 会话ID
     */
    void processStreamingLLM(List<Message> messages, WebSocketSession session, Long conversationId);
    
    /**
     * 流式处理LLM请求（带语音通话状态）
     * @param messages 消息历史
     * @param session WebSocket会话，用于发送流式响应
     * @param conversationId 会话ID
     * @param isInVoiceCall 是否在语音通话状态
     */
    void processStreamingLLM(List<Message> messages, WebSocketSession session, Long conversationId, boolean isInVoiceCall);
    
    /**
     * 流式处理单个用户消息
     * @param userMessage 用户消息
     * @param session WebSocket会话
     * @param conversationId 会话ID
     */
    void processStreamingLLM(String userMessage, WebSocketSession session, Long conversationId);
    
    /**
     * 流式处理单个用户消息（带语音通话状态）
     * @param userMessage 用户消息
     * @param session WebSocket会话
     * @param conversationId 会话ID
     * @param isInVoiceCall 是否在语音通话状态
     */
    void processStreamingLLM(String userMessage, WebSocketSession session, Long conversationId, boolean isInVoiceCall);
    
    /**
     * 获取会话的完整文本
     * @param sessionId 会话ID
     * @return 完整文本
     */
    String getSessionText(String sessionId);
    
    /**
     * 清理会话数据
     * @param sessionId 会话ID
     */
    void cleanupSession(String sessionId);
    
    /**
     * 停止指定会话的LLM流式生成
     * @param sessionId 会话ID
     */
    void stopStreamingLLM(String sessionId);
}



